using NetTopologySuite.Geometries;
using ProjNet.CoordinateSystems;

namespace ZMap
{
    /// <summary>
    /// 地图 View 的参数设置
    /// </summary>
    public interface IView
    {
        /// <summary>
        /// 地图的投影
        /// </summary>
        IProjection Projection { get; }

        /// <summary>
        /// 分辨率
        /// </summary>
        double[] Resolutions { get; }

        /// <summary>
        /// 最大分辨率
        /// </summary>
        double MaxResolution { get; }

        /// <summary>
        /// 最小分辨率
        /// </summary>
        double MinResolution { get; }
        
        /// <summary>
        /// 最大缩放级别
        /// </summary>
        double MinZoom { get; }

        /// <summary>
        /// 最小缩放级别
        /// </summary>
        double MaxZoom { get; }
        
        /// <summary>
        /// 放大因子
        /// </summary>
        double ZoomFactor { get; }

        /// <summary>
        /// 当前放大级别
        /// </summary>
        double Zoom { get; }
        
        /// <summary>
        /// 旋转系数
        /// </summary>
        double Rotation { get; }

        /// <summary>
        /// 地图中心点
        /// </summary>
        Coordinate Center { get; }

        /// <summary>
        /// 地图的宽度
        /// </summary>
        int Width { get; }

        /// <summary>
        /// 地图的长度
        /// </summary>
        int Height { get; }

        /// <summary>
        /// 坐标点转换成屏幕上的坐标
        /// </summary>
        /// <param name="coordinate"></param>
        /// <returns></returns>
        Coordinate WordToScreen(Coordinate coordinate);
    }
}